<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数据类型的转换</title>
</head>
<body>
    
</body>
<script>
    /*
        数据类型的转换:强制类型或隐式类型转换，把数据从某种类型转到另外一种类型

            * 强制类型转换：通过某个方法进行数据类型转换
                * String() 把其他类型转成字符串
                * Number() 把其他类型转成数字
                * Boolean() 把其他类型转成布尔
                * parseInt() 把字符串转成数字
            * 隐式类型转换：系统自动帮你转换数据类型
    */

    //String() 把其他类型转成字符串
    var num1 = 88;
    var num2 = String(num1);
    console.log(num1,num2);
    console.log(typeof num1,typeof num2);//number string

    var bool = true;
    var bool2 = String(bool);
    console.log(typeof bool,typeof bool2);//boolean string


    var age1 = 23;
    var age2 = 'aa';
    var age3 = age1 + age2;
    console.log(age3);//33 2310   + 有两个用法，当两边都是数字类型的时候，+就是数学相加； 但是一旦 + 一边出现字符串，则+变成字符串拼接。

    //隐式类型转换：- * / %
    var total1 = 6;
    var total2 = 'aa';
    var total3 = total1 - total2;//total2 ：is not defined total2未声明；total2 is undefined ： 声明了未赋值
    console.log(total3);//4 NaN:not a number

    console.log(NaN == NaN);//? FALSE

    /*
        真和假：
            * 真：非零数字、表达式未真的、非空字符串、true、非空对象
            * 假： 数字0、表达式结果是假、空字符串、false、空对象
    */

    var str = {};//'0'是非空字符串：真的； 数字0、-0：假的; '' 空字符串:假； ' ':非空字符串，真的; null :空对象，假的
    if(str) {
        //真：走这里
        console.log('真的');
    }else{
        //假：走这里
        console.log('假的');
    }


    //parseInt()把字符串转成数字
    let str1 = '55';
    let str2 = parseInt(str1);
    console.log(str1,str2);//55 55
    console.log(typeof str1,typeof str2);//string number

    let str3 = '55.6';
    let str4 = parseInt(str1);
    console.log(str3,str4);//? 55.6 55 取整
    console.log(typeof str1,typeof str2);//string number


    let str5 = 'aa55daaa';
    let str6 = parseInt(str1);
    console.log(str5,str6);//? 提取数字
    console.log(typeof str1,typeof str2);//string number
</script>
</html>